package com.ruoyi.pack.service;

import java.util.List;
import com.ruoyi.pack.domain.PackLocator;

/**
 * 定位器Service接口
 * 
 * @author ruoyi
 * @date 2024-01-01
 */
public interface IPackLocatorService 
{
    /**
     * 查询定位器
     * 
     * @param locatorId 定位器主键
     * @return 定位器
     */
    public PackLocator selectPackLocatorByLocatorId(Long locatorId);

    /**
     * 查询定位器列表
     * 
     * @param packLocator 定位器
     * @return 定位器集合
     */
    public List<PackLocator> selectPackLocatorList(PackLocator packLocator);

    /**
     * 新增定位器
     * 
     * @param packLocator 定位器
     * @return 结果
     */
    public int insertPackLocator(PackLocator packLocator);

    /**
     * 修改定位器
     * 
     * @param packLocator 定位器
     * @return 结果
     */
    public int updatePackLocator(PackLocator packLocator);

    /**
     * 批量删除定位器
     * 
     * @param locatorIds 需要删除的定位器主键集合
     * @return 结果
     */
    public int deletePackLocatorByLocatorIds(Long[] locatorIds);

    /**
     * 删除定位器信息
     * 
     * @param locatorId 定位器主键
     * @return 结果
     */
    public int deletePackLocatorByLocatorId(Long locatorId);

    /**
     * 根据定位器编码查询定位器
     * 
     * @param locatorCode 定位器编码
     * @return 定位器
     */
    public PackLocator selectPackLocatorByLocatorCode(String locatorCode);

    /**
     * 更新定位器状态
     * 
     * @param locatorId 定位器ID
     * @param locatorStatus 定位器状态
     * @param batteryLevel 电池电量
     * @param signalStrength 信号强度
     * @return 结果
     */
    public int updateLocatorStatus(Long locatorId, String locatorStatus, Long batteryLevel, Long signalStrength);

    /**
     * 查询未绑定器具的定位器
     * 
     * @return 定位器集合
     */
    public List<PackLocator> selectUnboundLocators();

    /**
     * 查询已绑定器具的定位器
     * 
     * @return 定位器集合
     */
    public List<PackLocator> selectBoundLocators();

    /**
     * 校验定位器编码唯一性
     * 
     * @param locatorCode 定位器编码
     * @return 结果 true-唯一 false-不唯一
     */
    public boolean checkLocatorCodeUnique(String locatorCode);

    /**
     * 校验定位器是否可以绑定
     * 
     * @param locatorId 定位器ID
     * @return 结果 true-可以绑定 false-不可以绑定
     */
    public boolean checkLocatorCanBind(Long locatorId);

    /**
     * 校验定位器状态是否正常
     * 
     * @param locatorId 定位器ID
     * @return 结果 true-正常 false-异常
     */
    public boolean checkLocatorStatusNormal(Long locatorId);
    
    /**
     * 导入定位器数据
     * 
     * @param locatorList 定位器数据列表
     * @param isUpdateSupport 是否更新支持，如果已存在，则进行更新数据
     * @param operName 操作用户
     * @return 结果
     */
    public String importLocator(List<PackLocator> locatorList, Boolean isUpdateSupport, String operName);
} 